package dominio.fantasma.estrategiasMovimiento;

import dominio.comun.Posicion;
import dominio.fantasma.IFantasma;
import dominio.laberinto.Laberinto;

/**
 * @author RJC
 * @version 1.0
 * @created 16-jun-2012 11:59:26
 */
public class EstrategiaBuscador extends EstrategiaMovimiento {

	protected Posicion ultimaPosicionPacman;

	public EstrategiaBuscador(){

	}

	@Override
	protected Posicion queHacerAnteUnaBifurcacion(IFantasma unContexto, boolean meAcerco) {
		boolean pacmanEnRangoDeVision = this.elPacmanEstaEnRangoVision(unContexto);
		
		if (pacmanEnRangoDeVision) {
			return moverseSegunElPacman(unContexto, meAcerco, Laberinto.getInstance().getPacman().getPosicion());
		}
		else if (this.ultimaPosicionPacman!= null){
			return moverseSegunElPacman(unContexto, meAcerco, this.ultimaPosicionPacman);			
		}
		else return moverseAleatoriamente(unContexto);
	}
	
	private void actualizarPosPacman(IFantasma unContexto){
		if (this.elPacmanEstaEnRangoVision(unContexto)){
			ultimaPosicionPacman = Laberinto.getInstance().getPacman().getPosicion();
		}
	}

	@Override
	protected void alFinalizar(IFantasma unContexto) {
		actualizarPosPacman(unContexto);
	}

	@Override
	protected int getRangoVision(IFantasma unContexto) {
		return VISION_STANDARD *3 ;
		
	}

	
	

}
